Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plagiarism checks: Introduce continuos plagiarism control #7302

Merged
merged 134 commits into from
Oct 27, 2023

Conversation

jakubriegel
Copy link
Contributor

@jakubriegel jakubriegel commented Oct 2, 2023

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
  • I followed the coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Changes affecting Programming Exercises

  • I tested all changes and their related features with all corresponding user types on Test Server 1 (Atlassian Suite).
  • I tested all changes and their related features with all corresponding user types on Test Server 2 (Jenkins and Gitlab).

Motivation and Context

Continuous plagiarism control (cpc) introduces possibility of a new approach for preventing plagiarism in student submissions. Cpc automatically scans all submissions and gently informs students, whose solutions are very similar to solutions of any other student.

Currently students receive information about a plagiarism case only after the exercise due date. This information itself has a form of punishment, as it leaves no room for improvement and can have severe consequences for the student. The new approach shortens the feedback loop of plagiarism checks and therefore encourages students to improve their solutions before the submission time is over. This may lead to less plagiarism cases opened for each exercises which improves the overall learning outcomes for students and reduces the amount of work to be performed by instructors.

Description

This is an experimental feature.

Continuous plagiarism control consist of the following features:

  • plagiarism detection can start automatically each night during the submission period,
  • optionally one more detection starts the night after the submission period is over,
  • Artemis creates plagiarism cases for submissions included in plagiarism comparisons detected by the cpc,
  • cpc plagiarism cases posts and notifications contain special messages that only mention possible similarities to other submissions (see screenshots for details)
  • Artemis removes cpc plagiarism cases from submissions when any the subsequent cpc runs detects similarity is gone,
  • Artemis stores configuration for cpc checks in the exercise model,
  • instructors still can trigger manual plagiarism checks and configure them per run using the current interface.

Note

For those who reviewed other cpc related PRs in the past: This PR introduced new, simplified version of the cpc. The general approach is unchanged and it contains a lot of the code created before. Main differences is that the cpc doesn't change the score and that notification is made using plagiarism cases flow.

When cpc detects plagiarism, authors of all plagiarism submissions will receive a plagiarism case and they will see a Significant Similarity button on the exercise participation site. This button is similar to the Plagiarism Case button visible when a standard plagiarism case is created for the exercise.

The cpc is an optional feature which needs to be explicitly enabled by the instructor. It may be necessary to verify the legal compliance before enabling it.

Steps for Testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  • 1 Programming, Text or Modelling Exercise
  • test branch with cpc triggered every 1min deployed (plagiarism-detection-cpc-1min)
  1. Deploy Artemis locally or on ts1.
  2. Enable cpc for your exercise: set the cpc checkbox and a due data in the exercise creation page.
  3. Create two identical submissions by two different students.
  4. Wait 1min.
  5. Verify that the notification about the plagiarism case was delivered to both students and that both students and the instructor can view it (see screenshots for reference).
  6. Completely change one submission.
  7. Wait 1min.
  8. Verify that the plagiarism case was deleted.

Review Progress

Performance Review

  • I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Test Coverage

Class/File Line Coverage Confirmation (assert/expect)
ContinuousPlagiarismControlService.java 100%
PlagiarismDetectionService.java 100%
PlagiarismDetectionConfigHelper.java 86% (empty constructor omitted)

Screenshots

The Significant Similarity button visible on the participation page:
image

The cpc plagiarism case student notification:
image

The cpc plagiarism case student view:
image

The cpc plagiarism case instructor view:
image
image

The cpc plagiarism case email:
image

vinceclifford
vinceclifford previously approved these changes Oct 25, 2023
Copy link

@vinceclifford vinceclifford left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good for me. Participated in testing session on October 25th

Copy link
Contributor

@florian-glombik florian-glombik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on ts1, I received the notification and the email!

It worked as described, I do have some suggestions that are out of scope of this PR:

  • UI/UX: I think it would be good to see an indicator in the exercise overview and the (text) editor that there is a similarity detected and not only

View with indicator
image

Views without indicator
image
image

  • The Link is not displayed properly when using outlook on chrome
    image

@jakubriegel jakubriegel added ready to merge and removed ready for review maintainer-approved The feature maintainer has approved the PR labels Oct 26, 2023
MarkusPaulsen
MarkusPaulsen previously approved these changes Oct 27, 2023
Copy link
Contributor

@MarkusPaulsen MarkusPaulsen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-approved

@MarkusPaulsen MarkusPaulsen added the maintainer-approved The feature maintainer has approved the PR label Oct 27, 2023
@krusche krusche changed the title Plagiarism checks: Introduce continuos plagiarism control (cpc) Plagiarism checks: Introduce continuos plagiarism control Oct 27, 2023
@krusche krusche added this to the 6.6.3 milestone Oct 27, 2023
@krusche krusche merged commit 0e6ae84 into develop Oct 27, 2023
12 of 13 checks passed
@krusche krusche deleted the plagiarism-detection-cpc branch October 27, 2023 20:15
@jakubriegel jakubriegel mentioned this pull request Oct 28, 2023
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client Pull requests that update TypeScript code. (Added Automatically!) config-change Pull requests that change the config in a way that they require a deployment via Ansible. database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. maintainer-approved The feature maintainer has approved the PR ready to merge server Pull requests that update Java code. (Added Automatically!) tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.